package Sort.BubbleSort;

public class Bubble2 {
    /*
    对数组a中元素进行交换

    原冒泡算法的优化版，如果上次遍历结束后发现没有元素交换，则说明数组已经有序，则不在排序，直接推出
     */
    public static void sort(Comparable[] a){
        boolean swapped=false;
        for(int i= a.length-1;i>0;i--){
            for(int j=0;j<i;j++){
                if(greater(a[j],a[j+1])){
                    exch(a,j,j+1);
                    swapped=true;
                }
                System.out.println("第"+j+"轮交换");
            }
            if(!swapped){
                break;
            }
            System.out.println("第"+i+"轮遍历");
            System.out.println("----------------");
        }


    }
    private static boolean greater(Comparable v,Comparable w){
        return v.compareTo(w)>0;

    }
    /*
    数组元素i和j交换位置
     */
    private static void exch(Comparable[] a,int i,int j){
        Comparable temp;
        temp=a[i];
        a[i]=a[j];
        a[j]=temp;
    }




}
